package ten.test_10_28;

import java.util.*;

// 写一个函数，给定一个List<Integer>，返回第一个不重复的Integer。若都是重复的Integer，则返回NULL。
public class Solution {
    public Integer gteResult(ArrayList<Integer> list) {
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            if(map.containsKey(list.get(i))){
                map.put(list.get(i), map.get(list.get(i)) + 1);
            } else {
                map.put(list.get(i), 1);
            }
        }
        for (int i = 0; i < list.size(); i++) {
            if(map.get(list.get(i)) == 1){
                return list.get(i);
            }
        }
        return null;
    }
    public Integer gteResult2(ArrayList<Integer> list,int k) {
        if (list == null || list.size() < 2) {
            return null;
        }
        if (list.size() < 3) {
            if (Math.abs(list.get(0) - list.get(1)) > k) {
                return list.get(0);
            } else {
                return null;
            }
        }
        ArrayList<Integer> list2 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            list2.add(list.get(i));
        }
        Collections.sort(list);
        Set<Integer> set = new HashSet<>();
        for (int i = list.size() - 2; i > 0; i--) {
            if (Math.abs(list.get(i) - list.get(i - 1)) > k && Math.abs(list.get(i + 1) - list.get(i)) > k) {
                set.add(list.get(i));
            }
        }
        if (Math.abs(list.get(0) - list.get(1)) > k) {
            set.add(list.get(0));
        }
        if (Math.abs(list.get(list.size() - 1) - list.get(list.size() - 2)) > k) {
            set.add(list.get(list.size() - 1));
        }
        for (int i = 0; i < list2.size(); i++) {
            if (set.contains(list2.get(i))) {
                return list2.get(i);
            }
        }
        return null;
    }

}
